<?php

namespace App\Crontab;

use App\Util\CommonHelper;
use \EasySwoole\Crontab\JobInterface;

class TaskDay implements JobInterface
{
    public function jobName(): string
    {
        // 定时任务的名称
        return 'taskDay';
    }

    public function crontabRule(): string
    {
        // 定义执行规则 根据Crontab来定义
        return '0 0 * * *';
    }

    public function run()
    {
        //防止多台机器重复执行
        if(false === TaskExclusive::lock(__CLASS__ . ':' . __FUNCTION__))return false;
        // 定时任务的执行逻辑
        $delay = 1;
        \EasySwoole\Component\Timer::getInstance()->after($delay * 1500, function () use ($delay) {
            try{
                // \App\Process\Task::scanMerchantsExpired();
            }catch (\Throwable $e){
                CommonHelper::logException($e);
            }
            \EasySwoole\EasySwoole\Logger::getInstance()->info('商户过期任务: ' . date('Y-m-d H:i:s', time() + $delay));
        });
        ++$delay;
        return true;
    }

    public function onException(\Throwable $throwable)
    {
        // 捕获 run 方法内所抛出的异常
    }

}